package cn.tedu.util;

import java.util.*;

//测试 List 接口
public class Test3_1 {
    public static void main(String[] args) {
        //1.创建对象
        List<Integer> list=new ArrayList<>();
        //2.调用方法
        //继承自父接口Collectionde
        // boolean add(E e) 有序+可以重复+可以存多个null
        System.out.println(list.add(100));
        System.out.println(list.add(200));
        System.out.println(list.add(300));
        System.out.println(list.add(100));
        System.out.println(list.add(200));
        System.out.println(list.add(null));
        System.out.println(list.add(null));
        //        boolean contains(Object o)
        System.out.println(list.contains(200));
        //        boolean containsAll(Collection<?> c)
        System.out.println(list.containsAll(list));
        //        boolean equals(Object o)
        System.out.println(list.equals("rose"));
        //        int hashCode()
        System.out.println(list.hashCode());
        //        boolean isEmpty()
        System.out.println(list.isEmpty());
        //        boolean remove(Object o)
        System.out.println(list.remove(1));
        //        int size()
        System.out.println(list.size());
        //        Object[] toArray()
        System.out.println(Arrays.toString(list.toArray()));
        //        Iterator<E> iterator()
        System.out.println(list.iterator());

        //自己扩展的方法
        list.add(0,10);//在指定下标位置添加新元素
        System.out.println(list);
        System.out.println(list.get(3));//获取下标为3的对应的元素
        System.out.println(list.indexOf(200));//获取200这个元素第一次出现的下标
        System.out.println(list.lastIndexOf(200));//获取200这个元素最后一次出现的下标
        System.out.println(list.remove(1));//移除下标为1处的元素
        System.out.println(list.set(5,888));//把下标为5的元素替换为888
        System.out.println(list);
        List<Integer> list2=list.subList(2,6);//从2开始到6结束，截取子list2
        System.out.println(list2);
        //练习：移除指定的元素
        System.out.println(list.remove(new Integer(300)));//自动装箱

        //TODO 迭代list接口中元素的方式
        Iterator<Integer> it =list.iterator();
        while (it.hasNext()){
            Integer date=it.next();
            System.out.println(date);
        }
        for (int i = 0; i <list.size() ; i++) {
            Integer date =list.get(i);
            System.out.println(date);
        }
        for (Integer cc:list) {
            System.out.println(cc);
        }
        //方式4：list子接口扩展的方法liltIterator<E> iterator
        ListIterator<Integer> it2=list.listIterator();
        while (it2.hasNext()){
            Integer date =it2.next();
            System.out.println(date);
        }
        while(it2.hasPrevious()){
            Integer date =it2.previous();
            System.out.println(date);
        }


    }
}
